const db = require('../db'); // 你的数据库连接模块，比如 mysql2/promise
//TODO：性能优化，内存缓存。
module.exports = function requirePermission() {
    return async (req, res, next) => {
        const user = req.user;
        if (!user) return res.status(401).json({ error: '未登录' });

        try {
            // 查询该角色的权限
            const [rows] = await db.query('SELECT permission FROM permissions WHERE role = ? AND status = 1', [user.role]);
            if (rows.length === 0) {
                return res.status(403).json({ error: '无访问权限' });
            }

            const permissionList = JSON.parse(rows[0].permission);

            // 超管直接放行
            if (permissionList.includes('*')) return next();

            // 判断当前接口是否在允许列表中
            const path = req.baseUrl + req.route.path;
            if (!permissionList.includes(path)) {
                return res.status(403).json({ error: '无权访问该接口' });
            }

            next();
        } catch (err) {
            console.error(err);
            res.status(500).json({ error: '权限校验出错' });
        }
    };
};

